package imp.pruebas.montyhall;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;


public class CajaPremios {
	private int numPuertas;	
	boolean puertas[];
	HashMap<Integer, Integer> puertasAbiertas = new HashMap<Integer,Integer>();
	Random rand;
	
	public void inicializar(Random rand, int numPuertas) {
		
		this.numPuertas = numPuertas;
		puertas = new boolean[numPuertas];
		
		for (int i = 0; i<puertas.length;i++) {
			puertas[i] = false;
		}
		puertasAbiertas.clear();
		
		int puertaPremio = rand.nextInt(numPuertas);
		puertas[puertaPremio] = true;
		this.rand = rand;
	}
	
	protected Map<Integer,Integer> getPuertasAbiertas() {
		return this.puertasAbiertas;
	}
	
	public int abrirPuertaNoElegidaNoPremio(int puertaElegida) {
		
		if (puertasAbiertas.entrySet().size() >= numPuertas -2 ) {
			throw new RuntimeException("Algo salio mal, queres abrir una puerta de mas " + puertasAbiertas.size());
		}
			
		
		int puertaAbierta = rand.nextInt(numPuertas);
		while ((puertasAbiertas.get(puertaAbierta) != null) || (puertaAbierta == puertaElegida) ||
					puertas[puertaAbierta] == true) {
			puertaAbierta = rand.nextInt(numPuertas);
		}
		
		puertasAbiertas.put(puertaAbierta, puertaAbierta);
		return puertaAbierta;
	}
	
	public boolean continuarAbriendo() {
		return (puertasAbiertas.size() <  numPuertas -2); 
	}
	
	public boolean tienePremio(int puertaNro) {
		return puertas[puertaNro];
	}
	
	
	
}
